package LC;

/**
 * @ClassName LC43
 * @Description: TODO
 * @Author hl
 * @Date 2021/5/2
 * @Version V1.0
 **/
public class LC43 {
/*    //方法1
   public static String multiply(String num1, String num2) {
        if(num1.equals("0")||num2.equals("0")){
            return "0";
        }
        String ans="0";
        for(int i=num1.length()-1;i>=0;i--){
           int add=0;
           int x=num1.charAt(i)-'0';
           StringBuffer str=new StringBuffer();
           for(int j=num1.length()-1;j>i;j--){
               str.append("0");
            }
           for(int j=num2.length()-1;j>=0;j--){
               int y=num2.charAt(j)-'0';
               add=add+x*y;
               str.append(add%10);
               add=add/10;
           }
           if(add!=0){
               str.append(add);
           }
            ans=addString(ans,str.reverse().toString());
        }
        return ans;
    }

    public static String addString(String ans, String str) {
        StringBuffer newStr=new StringBuffer();
        int i=ans.length()-1;
        int j=str.length()-1;
        int res=0;
        while(i>=0||j>=0||res>0){
            if(i>=0){
                res+=ans.charAt(i--)-'0';
            }
            if(j>=0){
                res+=str.charAt(j--)-'0';
            }
            newStr.append(res%10);
            res=res/10;
        }
        return newStr.reverse().toString();
    }*/

    //方法二
    public static String multiply(String num1, String num2) {
        if(num1.equals("0")||num2.equals("0")){
            return "0";
        }
        int []res=new int[num1.length()+num2.length()];
        for(int i=num1.length()-1;i>=0;i--){
            int x=num1.charAt(i)-'0';
            for(int j=num2.length()-1;j>=0;j--){
            int y=num2.charAt(j)-'0';
            int sum=x*y+res[i+j+1];
            res[i+j+1]=sum%10;
            res[i+j]+=sum/10;//注意这里
            }
        }
        StringBuffer str=new StringBuffer();
        for(int i=0;i<res.length;i++){
            if(i==0&&res[i]==0){
                continue;
            }
            str.append(res[i]);
        }
        return str.toString();
    }

public static void main(String[] args) {
    System.out.println(multiply("9","99"));

}
}
